// $ANTLR 3.0.1 smartidl.g 2010-09-28 17:11:38

	package org.latestbit.smartobjects.smartidlc.parser;
	
	import java.util.ArrayList;
	import java.util.Collection;	
	import org.latestbit.smartobjects.smartidlc.model.*;
	import org.latestbit.smartobjects.smartidlc.util.*;


import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("unused")
public class smartidlLexer extends Lexer {
    public static final int FloatTypeSuffix=14;
    public static final int OctalLiteral=8;
    public static final int CharacterLiteral=6;
    public static final int Exponent=15;
    public static final int T29=29;
    public static final int T28=28;
    public static final int T27=27;
    public static final int T26=26;
    public static final int T25=25;
    public static final int EOF=-1;
    public static final int T24=24;
    public static final int HexDigit=11;
    public static final int T23=23;
    public static final int Identifier=4;
    public static final int T70=70;
    public static final int T62=62;
    public static final int T63=63;
    public static final int T64=64;
    public static final int T65=65;
    public static final int T66=66;
    public static final int T67=67;
    public static final int T68=68;
    public static final int T69=69;
    public static final int T38=38;
    public static final int T37=37;
    public static final int T39=39;
    public static final int COMMENT=21;
    public static final int T34=34;
    public static final int T33=33;
    public static final int T36=36;
    public static final int T35=35;
    public static final int T30=30;
    public static final int T61=61;
    public static final int T32=32;
    public static final int T60=60;
    public static final int T31=31;
    public static final int HexLiteral=7;
    public static final int LINE_COMMENT=22;
    public static final int IntegerTypeSuffix=10;
    public static final int T49=49;
    public static final int T48=48;
    public static final int T43=43;
    public static final int Tokens=71;
    public static final int DecimalLiteral=9;
    public static final int T42=42;
    public static final int SignPrefix=12;
    public static final int T41=41;
    public static final int T40=40;
    public static final int T47=47;
    public static final int T46=46;
    public static final int T45=45;
    public static final int T44=44;
    public static final int StringLiteral=5;
    public static final int WS=20;
    public static final int T50=50;
    public static final int UnicodeEscape=17;
    public static final int FloatingPointLiteral=13;
    public static final int T59=59;
    public static final int T52=52;
    public static final int T51=51;
    public static final int T54=54;
    public static final int T53=53;
    public static final int EscapeSequence=16;
    public static final int OctalEscape=18;
    public static final int Letter=19;
    public static final int T56=56;
    public static final int T55=55;
    public static final int T58=58;
    public static final int T57=57;
    public smartidlLexer() {;} 
    public smartidlLexer(CharStream input) {
        super(input);
    }
    public String getGrammarFileName() { return "smartidl.g"; }

    // $ANTLR start T23
    public final void mT23() throws RecognitionException {
        try {
            int _type = T23;
            // smartidl.g:11:5: ( 'namespace' )
            // smartidl.g:11:7: 'namespace'
            {
            match("namespace"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T23

    // $ANTLR start T24
    public final void mT24() throws RecognitionException {
        try {
            int _type = T24;
            // smartidl.g:12:5: ( ';' )
            // smartidl.g:12:7: ';'
            {
            match(';'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T24

    // $ANTLR start T25
    public final void mT25() throws RecognitionException {
        try {
            int _type = T25;
            // smartidl.g:13:5: ( 'import' )
            // smartidl.g:13:7: 'import'
            {
            match("import"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T25

    // $ANTLR start T26
    public final void mT26() throws RecognitionException {
        try {
            int _type = T26;
            // smartidl.g:14:5: ( 'typedef' )
            // smartidl.g:14:7: 'typedef'
            {
            match("typedef"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T26

    // $ANTLR start T27
    public final void mT27() throws RecognitionException {
        try {
            int _type = T27;
            // smartidl.g:15:5: ( 'as' )
            // smartidl.g:15:7: 'as'
            {
            match("as"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T27

    // $ANTLR start T28
    public final void mT28() throws RecognitionException {
        try {
            int _type = T28;
            // smartidl.g:16:5: ( 'encrypted' )
            // smartidl.g:16:7: 'encrypted'
            {
            match("encrypted"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T28

    // $ANTLR start T29
    public final void mT29() throws RecognitionException {
        try {
            int _type = T29;
            // smartidl.g:17:5: ( 'required' )
            // smartidl.g:17:7: 'required'
            {
            match("required"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T29

    // $ANTLR start T30
    public final void mT30() throws RecognitionException {
        try {
            int _type = T30;
            // smartidl.g:18:5: ( '(' )
            // smartidl.g:18:7: '('
            {
            match('('); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T30

    // $ANTLR start T31
    public final void mT31() throws RecognitionException {
        try {
            int _type = T31;
            // smartidl.g:19:5: ( ')' )
            // smartidl.g:19:7: ')'
            {
            match(')'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T31

    // $ANTLR start T32
    public final void mT32() throws RecognitionException {
        try {
            int _type = T32;
            // smartidl.g:20:5: ( 'unsigned' )
            // smartidl.g:20:7: 'unsigned'
            {
            match("unsigned"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T32

    // $ANTLR start T33
    public final void mT33() throws RecognitionException {
        try {
            int _type = T33;
            // smartidl.g:21:5: ( 'byte' )
            // smartidl.g:21:7: 'byte'
            {
            match("byte"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T33

    // $ANTLR start T34
    public final void mT34() throws RecognitionException {
        try {
            int _type = T34;
            // smartidl.g:22:5: ( 'int16' )
            // smartidl.g:22:7: 'int16'
            {
            match("int16"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T34

    // $ANTLR start T35
    public final void mT35() throws RecognitionException {
        try {
            int _type = T35;
            // smartidl.g:23:5: ( 'int32' )
            // smartidl.g:23:7: 'int32'
            {
            match("int32"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T35

    // $ANTLR start T36
    public final void mT36() throws RecognitionException {
        try {
            int _type = T36;
            // smartidl.g:24:5: ( 'int64' )
            // smartidl.g:24:7: 'int64'
            {
            match("int64"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T36

    // $ANTLR start T37
    public final void mT37() throws RecognitionException {
        try {
            int _type = T37;
            // smartidl.g:25:5: ( 'integer' )
            // smartidl.g:25:7: 'integer'
            {
            match("integer"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T37

    // $ANTLR start T38
    public final void mT38() throws RecognitionException {
        try {
            int _type = T38;
            // smartidl.g:26:5: ( 'float' )
            // smartidl.g:26:7: 'float'
            {
            match("float"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T38

    // $ANTLR start T39
    public final void mT39() throws RecognitionException {
        try {
            int _type = T39;
            // smartidl.g:27:5: ( 'double' )
            // smartidl.g:27:7: 'double'
            {
            match("double"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T39

    // $ANTLR start T40
    public final void mT40() throws RecognitionException {
        try {
            int _type = T40;
            // smartidl.g:28:5: ( 'number' )
            // smartidl.g:28:7: 'number'
            {
            match("number"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T40

    // $ANTLR start T41
    public final void mT41() throws RecognitionException {
        try {
            int _type = T41;
            // smartidl.g:29:5: ( 'max-precision' )
            // smartidl.g:29:7: 'max-precision'
            {
            match("max-precision"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T41

    // $ANTLR start T42
    public final void mT42() throws RecognitionException {
        try {
            int _type = T42;
            // smartidl.g:30:5: ( '=' )
            // smartidl.g:30:7: '='
            {
            match('='); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T42

    // $ANTLR start T43
    public final void mT43() throws RecognitionException {
        try {
            int _type = T43;
            // smartidl.g:31:5: ( 'unicode' )
            // smartidl.g:31:7: 'unicode'
            {
            match("unicode"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T43

    // $ANTLR start T44
    public final void mT44() throws RecognitionException {
        try {
            int _type = T44;
            // smartidl.g:32:5: ( 'string' )
            // smartidl.g:32:7: 'string'
            {
            match("string"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T44

    // $ANTLR start T45
    public final void mT45() throws RecognitionException {
        try {
            int _type = T45;
            // smartidl.g:33:5: ( 'char' )
            // smartidl.g:33:7: 'char'
            {
            match("char"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T45

    // $ANTLR start T46
    public final void mT46() throws RecognitionException {
        try {
            int _type = T46;
            // smartidl.g:34:5: ( 'boolean' )
            // smartidl.g:34:7: 'boolean'
            {
            match("boolean"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T46

    // $ANTLR start T47
    public final void mT47() throws RecognitionException {
        try {
            int _type = T47;
            // smartidl.g:35:5: ( 'datetime' )
            // smartidl.g:35:7: 'datetime'
            {
            match("datetime"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T47

    // $ANTLR start T48
    public final void mT48() throws RecognitionException {
        try {
            int _type = T48;
            // smartidl.g:36:5: ( 'to' )
            // smartidl.g:36:7: 'to'
            {
            match("to"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T48

    // $ANTLR start T49
    public final void mT49() throws RecognitionException {
        try {
            int _type = T49;
            // smartidl.g:37:5: ( ',' )
            // smartidl.g:37:7: ','
            {
            match(','); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T49

    // $ANTLR start T50
    public final void mT50() throws RecognitionException {
        try {
            int _type = T50;
            // smartidl.g:38:5: ( 'allowed' )
            // smartidl.g:38:7: 'allowed'
            {
            match("allowed"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T50

    // $ANTLR start T51
    public final void mT51() throws RecognitionException {
        try {
            int _type = T51;
            // smartidl.g:39:5: ( 'array' )
            // smartidl.g:39:7: 'array'
            {
            match("array"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T51

    // $ANTLR start T52
    public final void mT52() throws RecognitionException {
        try {
            int _type = T52;
            // smartidl.g:40:5: ( 'of' )
            // smartidl.g:40:7: 'of'
            {
            match("of"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T52

    // $ANTLR start T53
    public final void mT53() throws RecognitionException {
        try {
            int _type = T53;
            // smartidl.g:41:5: ( 'list' )
            // smartidl.g:41:7: 'list'
            {
            match("list"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T53

    // $ANTLR start T54
    public final void mT54() throws RecognitionException {
        try {
            int _type = T54;
            // smartidl.g:42:5: ( 'map' )
            // smartidl.g:42:7: 'map'
            {
            match("map"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T54

    // $ANTLR start T55
    public final void mT55() throws RecognitionException {
        try {
            int _type = T55;
            // smartidl.g:43:5: ( 'by' )
            // smartidl.g:43:7: 'by'
            {
            match("by"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T55

    // $ANTLR start T56
    public final void mT56() throws RecognitionException {
        try {
            int _type = T56;
            // smartidl.g:44:5: ( 'enum' )
            // smartidl.g:44:7: 'enum'
            {
            match("enum"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T56

    // $ANTLR start T57
    public final void mT57() throws RecognitionException {
        try {
            int _type = T57;
            // smartidl.g:45:5: ( '{' )
            // smartidl.g:45:7: '{'
            {
            match('{'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T57

    // $ANTLR start T58
    public final void mT58() throws RecognitionException {
        try {
            int _type = T58;
            // smartidl.g:46:5: ( '}' )
            // smartidl.g:46:7: '}'
            {
            match('}'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T58

    // $ANTLR start T59
    public final void mT59() throws RecognitionException {
        try {
            int _type = T59;
            // smartidl.g:47:5: ( 'structure' )
            // smartidl.g:47:7: 'structure'
            {
            match("structure"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T59

    // $ANTLR start T60
    public final void mT60() throws RecognitionException {
        try {
            int _type = T60;
            // smartidl.g:48:5: ( 'extends' )
            // smartidl.g:48:7: 'extends'
            {
            match("extends"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T60

    // $ANTLR start T61
    public final void mT61() throws RecognitionException {
        try {
            int _type = T61;
            // smartidl.g:49:5: ( 'exception' )
            // smartidl.g:49:7: 'exception'
            {
            match("exception"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T61

    // $ANTLR start T62
    public final void mT62() throws RecognitionException {
        try {
            int _type = T62;
            // smartidl.g:50:5: ( 'choice' )
            // smartidl.g:50:7: 'choice'
            {
            match("choice"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T62

    // $ANTLR start T63
    public final void mT63() throws RecognitionException {
        try {
            int _type = T63;
            // smartidl.g:51:5: ( 'interface' )
            // smartidl.g:51:7: 'interface'
            {
            match("interface"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T63

    // $ANTLR start T64
    public final void mT64() throws RecognitionException {
        try {
            int _type = T64;
            // smartidl.g:52:5: ( 'sessionid' )
            // smartidl.g:52:7: 'sessionid'
            {
            match("sessionid"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T64

    // $ANTLR start T65
    public final void mT65() throws RecognitionException {
        try {
            int _type = T65;
            // smartidl.g:53:5: ( 'void' )
            // smartidl.g:53:7: 'void'
            {
            match("void"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T65

    // $ANTLR start T66
    public final void mT66() throws RecognitionException {
        try {
            int _type = T66;
            // smartidl.g:54:5: ( 'throws' )
            // smartidl.g:54:7: 'throws'
            {
            match("throws"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T66

    // $ANTLR start T67
    public final void mT67() throws RecognitionException {
        try {
            int _type = T67;
            // smartidl.g:55:5: ( '.' )
            // smartidl.g:55:7: '.'
            {
            match('.'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T67

    // $ANTLR start T68
    public final void mT68() throws RecognitionException {
        try {
            int _type = T68;
            // smartidl.g:56:5: ( 'null' )
            // smartidl.g:56:7: 'null'
            {
            match("null"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T68

    // $ANTLR start T69
    public final void mT69() throws RecognitionException {
        try {
            int _type = T69;
            // smartidl.g:57:5: ( 'true' )
            // smartidl.g:57:7: 'true'
            {
            match("true"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T69

    // $ANTLR start T70
    public final void mT70() throws RecognitionException {
        try {
            int _type = T70;
            // smartidl.g:58:5: ( 'false' )
            // smartidl.g:58:7: 'false'
            {
            match("false"); 


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end T70

    // $ANTLR start HexLiteral
    public final void mHexLiteral() throws RecognitionException {
        try {
            int _type = HexLiteral;
            // smartidl.g:485:12: ( '0' ( 'x' | 'X' ) ( HexDigit )+ )
            // smartidl.g:485:14: '0' ( 'x' | 'X' ) ( HexDigit )+
            {
            match('0'); 
            if ( input.LA(1)=='X'||input.LA(1)=='x' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }

            // smartidl.g:485:28: ( HexDigit )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='F')||(LA1_0>='a' && LA1_0<='f')) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // smartidl.g:485:28: HexDigit
            	    {
            	    mHexDigit(); 

            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end HexLiteral

    // $ANTLR start DecimalLiteral
    public final void mDecimalLiteral() throws RecognitionException {
        try {
            int _type = DecimalLiteral;
            // smartidl.g:487:16: ( ( SignPrefix )? ( '0' | '1' .. '9' ( '0' .. '9' )* ) )
            // smartidl.g:487:18: ( SignPrefix )? ( '0' | '1' .. '9' ( '0' .. '9' )* )
            {
            // smartidl.g:487:18: ( SignPrefix )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0=='-') ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // smartidl.g:487:18: SignPrefix
                    {
                    mSignPrefix(); 

                    }
                    break;

            }

            // smartidl.g:487:30: ( '0' | '1' .. '9' ( '0' .. '9' )* )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0=='0') ) {
                alt4=1;
            }
            else if ( ((LA4_0>='1' && LA4_0<='9')) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("487:30: ( '0' | '1' .. '9' ( '0' .. '9' )* )", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // smartidl.g:487:31: '0'
                    {
                    match('0'); 

                    }
                    break;
                case 2 :
                    // smartidl.g:487:37: '1' .. '9' ( '0' .. '9' )*
                    {
                    matchRange('1','9'); 
                    // smartidl.g:487:46: ( '0' .. '9' )*
                    loop3:
                    do {
                        int alt3=2;
                        int LA3_0 = input.LA(1);

                        if ( ((LA3_0>='0' && LA3_0<='9')) ) {
                            alt3=1;
                        }


                        switch (alt3) {
                    	case 1 :
                    	    // smartidl.g:487:46: '0' .. '9'
                    	    {
                    	    matchRange('0','9'); 

                    	    }
                    	    break;

                    	default :
                    	    break loop3;
                        }
                    } while (true);


                    }
                    break;

            }


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end DecimalLiteral

    // $ANTLR start OctalLiteral
    public final void mOctalLiteral() throws RecognitionException {
        try {
            int _type = OctalLiteral;
            // smartidl.g:489:14: ( '0' ( '0' .. '7' )+ )
            // smartidl.g:489:16: '0' ( '0' .. '7' )+
            {
            match('0'); 
            // smartidl.g:489:20: ( '0' .. '7' )+
            int cnt5=0;
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( ((LA5_0>='0' && LA5_0<='7')) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // smartidl.g:489:21: '0' .. '7'
            	    {
            	    matchRange('0','7'); 

            	    }
            	    break;

            	default :
            	    if ( cnt5 >= 1 ) break loop5;
                        EarlyExitException eee =
                            new EarlyExitException(5, input);
                        throw eee;
                }
                cnt5++;
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end OctalLiteral

    // $ANTLR start HexDigit
    public final void mHexDigit() throws RecognitionException {
        try {
            // smartidl.g:492:10: ( ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' ) )
            // smartidl.g:492:12: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' )
            {
            if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||(input.LA(1)>='a' && input.LA(1)<='f') ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }


            }

        }
        finally {
        }
    }
    // $ANTLR end HexDigit

    // $ANTLR start IntegerTypeSuffix
    public final void mIntegerTypeSuffix() throws RecognitionException {
        try {
            // smartidl.g:495:19: ( ( 'l' | 'L' ) )
            // smartidl.g:495:21: ( 'l' | 'L' )
            {
            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }


            }

        }
        finally {
        }
    }
    // $ANTLR end IntegerTypeSuffix

    // $ANTLR start SignPrefix
    public final void mSignPrefix() throws RecognitionException {
        try {
            // smartidl.g:498:12: ( ( '-' ) )
            // smartidl.g:498:14: ( '-' )
            {
            // smartidl.g:498:14: ( '-' )
            // smartidl.g:498:15: '-'
            {
            match('-'); 

            }


            }

        }
        finally {
        }
    }
    // $ANTLR end SignPrefix

    // $ANTLR start FloatingPointLiteral
    public final void mFloatingPointLiteral() throws RecognitionException {
        try {
            int _type = FloatingPointLiteral;
            // smartidl.g:511:5: ( ( SignPrefix )? ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? | '.' ( '0' .. '9' )+ ( Exponent )? | ( '0' .. '9' )+ Exponent | ( '0' .. '9' )+ ) )
            // smartidl.g:511:8: ( SignPrefix )? ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? | '.' ( '0' .. '9' )+ ( Exponent )? | ( '0' .. '9' )+ Exponent | ( '0' .. '9' )+ )
            {
            // smartidl.g:511:8: ( SignPrefix )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0=='-') ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // smartidl.g:511:8: SignPrefix
                    {
                    mSignPrefix(); 

                    }
                    break;

            }

            // smartidl.g:511:20: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? | '.' ( '0' .. '9' )+ ( Exponent )? | ( '0' .. '9' )+ Exponent | ( '0' .. '9' )+ )
            int alt14=4;
            alt14 = dfa14.predict(input);
            switch (alt14) {
                case 1 :
                    // smartidl.g:512:6: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )?
                    {
                    // smartidl.g:512:6: ( '0' .. '9' )+
                    int cnt7=0;
                    loop7:
                    do {
                        int alt7=2;
                        int LA7_0 = input.LA(1);

                        if ( ((LA7_0>='0' && LA7_0<='9')) ) {
                            alt7=1;
                        }


                        switch (alt7) {
                    	case 1 :
                    	    // smartidl.g:512:7: '0' .. '9'
                    	    {
                    	    matchRange('0','9'); 

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt7 >= 1 ) break loop7;
                                EarlyExitException eee =
                                    new EarlyExitException(7, input);
                                throw eee;
                        }
                        cnt7++;
                    } while (true);

                    match('.'); 
                    // smartidl.g:512:22: ( '0' .. '9' )*
                    loop8:
                    do {
                        int alt8=2;
                        int LA8_0 = input.LA(1);

                        if ( ((LA8_0>='0' && LA8_0<='9')) ) {
                            alt8=1;
                        }


                        switch (alt8) {
                    	case 1 :
                    	    // smartidl.g:512:23: '0' .. '9'
                    	    {
                    	    matchRange('0','9'); 

                    	    }
                    	    break;

                    	default :
                    	    break loop8;
                        }
                    } while (true);

                    // smartidl.g:512:34: ( Exponent )?
                    int alt9=2;
                    int LA9_0 = input.LA(1);

                    if ( (LA9_0=='E'||LA9_0=='e') ) {
                        alt9=1;
                    }
                    switch (alt9) {
                        case 1 :
                            // smartidl.g:512:34: Exponent
                            {
                            mExponent(); 

                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // smartidl.g:513:9: '.' ( '0' .. '9' )+ ( Exponent )?
                    {
                    match('.'); 
                    // smartidl.g:513:13: ( '0' .. '9' )+
                    int cnt10=0;
                    loop10:
                    do {
                        int alt10=2;
                        int LA10_0 = input.LA(1);

                        if ( ((LA10_0>='0' && LA10_0<='9')) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                    	case 1 :
                    	    // smartidl.g:513:14: '0' .. '9'
                    	    {
                    	    matchRange('0','9'); 

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt10 >= 1 ) break loop10;
                                EarlyExitException eee =
                                    new EarlyExitException(10, input);
                                throw eee;
                        }
                        cnt10++;
                    } while (true);

                    // smartidl.g:513:25: ( Exponent )?
                    int alt11=2;
                    int LA11_0 = input.LA(1);

                    if ( (LA11_0=='E'||LA11_0=='e') ) {
                        alt11=1;
                    }
                    switch (alt11) {
                        case 1 :
                            // smartidl.g:513:25: Exponent
                            {
                            mExponent(); 

                            }
                            break;

                    }


                    }
                    break;
                case 3 :
                    // smartidl.g:514:9: ( '0' .. '9' )+ Exponent
                    {
                    // smartidl.g:514:9: ( '0' .. '9' )+
                    int cnt12=0;
                    loop12:
                    do {
                        int alt12=2;
                        int LA12_0 = input.LA(1);

                        if ( ((LA12_0>='0' && LA12_0<='9')) ) {
                            alt12=1;
                        }


                        switch (alt12) {
                    	case 1 :
                    	    // smartidl.g:514:10: '0' .. '9'
                    	    {
                    	    matchRange('0','9'); 

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt12 >= 1 ) break loop12;
                                EarlyExitException eee =
                                    new EarlyExitException(12, input);
                                throw eee;
                        }
                        cnt12++;
                    } while (true);

                    mExponent(); 

                    }
                    break;
                case 4 :
                    // smartidl.g:515:9: ( '0' .. '9' )+
                    {
                    // smartidl.g:515:9: ( '0' .. '9' )+
                    int cnt13=0;
                    loop13:
                    do {
                        int alt13=2;
                        int LA13_0 = input.LA(1);

                        if ( ((LA13_0>='0' && LA13_0<='9')) ) {
                            alt13=1;
                        }


                        switch (alt13) {
                    	case 1 :
                    	    // smartidl.g:515:10: '0' .. '9'
                    	    {
                    	    matchRange('0','9'); 

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt13 >= 1 ) break loop13;
                                EarlyExitException eee =
                                    new EarlyExitException(13, input);
                                throw eee;
                        }
                        cnt13++;
                    } while (true);


                    }
                    break;

            }


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end FloatingPointLiteral

    // $ANTLR start Exponent
    public final void mExponent() throws RecognitionException {
        try {
            // smartidl.g:520:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
            // smartidl.g:520:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
            {
            if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }

            // smartidl.g:520:22: ( '+' | '-' )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0=='+'||LA15_0=='-') ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // smartidl.g:
                    {
                    if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse =
                            new MismatchedSetException(null,input);
                        recover(mse);    throw mse;
                    }


                    }
                    break;

            }

            // smartidl.g:520:33: ( '0' .. '9' )+
            int cnt16=0;
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( ((LA16_0>='0' && LA16_0<='9')) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // smartidl.g:520:34: '0' .. '9'
            	    {
            	    matchRange('0','9'); 

            	    }
            	    break;

            	default :
            	    if ( cnt16 >= 1 ) break loop16;
                        EarlyExitException eee =
                            new EarlyExitException(16, input);
                        throw eee;
                }
                cnt16++;
            } while (true);


            }

        }
        finally {
        }
    }
    // $ANTLR end Exponent

    // $ANTLR start FloatTypeSuffix
    public final void mFloatTypeSuffix() throws RecognitionException {
        try {
            // smartidl.g:523:17: ( ( 'f' | 'F' | 'd' | 'D' ) )
            // smartidl.g:523:19: ( 'f' | 'F' | 'd' | 'D' )
            {
            if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }


            }

        }
        finally {
        }
    }
    // $ANTLR end FloatTypeSuffix

    // $ANTLR start CharacterLiteral
    public final void mCharacterLiteral() throws RecognitionException {
        try {
            int _type = CharacterLiteral;
            // smartidl.g:526:5: ( '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\'' )
            // smartidl.g:526:9: '\\'' ( EscapeSequence | ~ ( '\\'' | '\\\\' ) ) '\\''
            {
            match('\''); 
            // smartidl.g:526:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )
            int alt17=2;
            int LA17_0 = input.LA(1);

            if ( (LA17_0=='\\') ) {
                alt17=1;
            }
            else if ( ((LA17_0>='\u0000' && LA17_0<='&')||(LA17_0>='(' && LA17_0<='[')||(LA17_0>=']' && LA17_0<='\uFFFE')) ) {
                alt17=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("526:14: ( EscapeSequence | ~ ( '\\'' | '\\\\' ) )", 17, 0, input);

                throw nvae;
            }
            switch (alt17) {
                case 1 :
                    // smartidl.g:526:16: EscapeSequence
                    {
                    mEscapeSequence(); 

                    }
                    break;
                case 2 :
                    // smartidl.g:526:33: ~ ( '\\'' | '\\\\' )
                    {
                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse =
                            new MismatchedSetException(null,input);
                        recover(mse);    throw mse;
                    }


                    }
                    break;

            }

            match('\''); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end CharacterLiteral

    // $ANTLR start StringLiteral
    public final void mStringLiteral() throws RecognitionException {
        try {
            int _type = StringLiteral;
            // smartidl.g:530:5: ( '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"' )
            // smartidl.g:530:8: '\"' ( EscapeSequence | ~ ( '\\\\' | '\"' ) )* '\"'
            {
            match('\"'); 
            // smartidl.g:530:12: ( EscapeSequence | ~ ( '\\\\' | '\"' ) )*
            loop18:
            do {
                int alt18=3;
                int LA18_0 = input.LA(1);

                if ( (LA18_0=='\\') ) {
                    alt18=1;
                }
                else if ( ((LA18_0>='\u0000' && LA18_0<='!')||(LA18_0>='#' && LA18_0<='[')||(LA18_0>=']' && LA18_0<='\uFFFE')) ) {
                    alt18=2;
                }


                switch (alt18) {
            	case 1 :
            	    // smartidl.g:530:14: EscapeSequence
            	    {
            	    mEscapeSequence(); 

            	    }
            	    break;
            	case 2 :
            	    // smartidl.g:530:31: ~ ( '\\\\' | '\"' )
            	    {
            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFE') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            match('\"'); 

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end StringLiteral

    // $ANTLR start EscapeSequence
    public final void mEscapeSequence() throws RecognitionException {
        try {
            // smartidl.g:535:5: ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape )
            int alt19=3;
            int LA19_0 = input.LA(1);

            if ( (LA19_0=='\\') ) {
                switch ( input.LA(2) ) {
                case 'u':
                    {
                    alt19=2;
                    }
                    break;
                case '\"':
                case '\'':
                case '\\':
                case 'b':
                case 'f':
                case 'n':
                case 'r':
                case 't':
                    {
                    alt19=1;
                    }
                    break;
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                    {
                    alt19=3;
                    }
                    break;
                default:
                    NoViableAltException nvae =
                        new NoViableAltException("533:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 19, 1, input);

                    throw nvae;
                }

            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("533:1: fragment EscapeSequence : ( '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' ) | UnicodeEscape | OctalEscape );", 19, 0, input);

                throw nvae;
            }
            switch (alt19) {
                case 1 :
                    // smartidl.g:535:9: '\\\\' ( 'b' | 't' | 'n' | 'f' | 'r' | '\\\"' | '\\'' | '\\\\' )
                    {
                    match('\\'); 
                    if ( input.LA(1)=='\"'||input.LA(1)=='\''||input.LA(1)=='\\'||input.LA(1)=='b'||input.LA(1)=='f'||input.LA(1)=='n'||input.LA(1)=='r'||input.LA(1)=='t' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse =
                            new MismatchedSetException(null,input);
                        recover(mse);    throw mse;
                    }


                    }
                    break;
                case 2 :
                    // smartidl.g:536:9: UnicodeEscape
                    {
                    mUnicodeEscape(); 

                    }
                    break;
                case 3 :
                    // smartidl.g:537:9: OctalEscape
                    {
                    mOctalEscape(); 

                    }
                    break;

            }
        }
        finally {
        }
    }
    // $ANTLR end EscapeSequence

    // $ANTLR start OctalEscape
    public final void mOctalEscape() throws RecognitionException {
        try {
            // smartidl.g:542:5: ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) )
            int alt20=3;
            int LA20_0 = input.LA(1);

            if ( (LA20_0=='\\') ) {
                int LA20_1 = input.LA(2);

                if ( ((LA20_1>='0' && LA20_1<='3')) ) {
                    int LA20_2 = input.LA(3);

                    if ( ((LA20_2>='0' && LA20_2<='7')) ) {
                        int LA20_4 = input.LA(4);

                        if ( ((LA20_4>='0' && LA20_4<='7')) ) {
                            alt20=1;
                        }
                        else {
                            alt20=2;}
                    }
                    else {
                        alt20=3;}
                }
                else if ( ((LA20_1>='4' && LA20_1<='7')) ) {
                    int LA20_3 = input.LA(3);

                    if ( ((LA20_3>='0' && LA20_3<='7')) ) {
                        alt20=2;
                    }
                    else {
                        alt20=3;}
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("540:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 20, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("540:1: fragment OctalEscape : ( '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) ( '0' .. '7' ) | '\\\\' ( '0' .. '7' ) );", 20, 0, input);

                throw nvae;
            }
            switch (alt20) {
                case 1 :
                    // smartidl.g:542:9: '\\\\' ( '0' .. '3' ) ( '0' .. '7' ) ( '0' .. '7' )
                    {
                    match('\\'); 
                    // smartidl.g:542:14: ( '0' .. '3' )
                    // smartidl.g:542:15: '0' .. '3'
                    {
                    matchRange('0','3'); 

                    }

                    // smartidl.g:542:25: ( '0' .. '7' )
                    // smartidl.g:542:26: '0' .. '7'
                    {
                    matchRange('0','7'); 

                    }

                    // smartidl.g:542:36: ( '0' .. '7' )
                    // smartidl.g:542:37: '0' .. '7'
                    {
                    matchRange('0','7'); 

                    }


                    }
                    break;
                case 2 :
                    // smartidl.g:543:9: '\\\\' ( '0' .. '7' ) ( '0' .. '7' )
                    {
                    match('\\'); 
                    // smartidl.g:543:14: ( '0' .. '7' )
                    // smartidl.g:543:15: '0' .. '7'
                    {
                    matchRange('0','7'); 

                    }

                    // smartidl.g:543:25: ( '0' .. '7' )
                    // smartidl.g:543:26: '0' .. '7'
                    {
                    matchRange('0','7'); 

                    }


                    }
                    break;
                case 3 :
                    // smartidl.g:544:9: '\\\\' ( '0' .. '7' )
                    {
                    match('\\'); 
                    // smartidl.g:544:14: ( '0' .. '7' )
                    // smartidl.g:544:15: '0' .. '7'
                    {
                    matchRange('0','7'); 

                    }


                    }
                    break;

            }
        }
        finally {
        }
    }
    // $ANTLR end OctalEscape

    // $ANTLR start UnicodeEscape
    public final void mUnicodeEscape() throws RecognitionException {
        try {
            // smartidl.g:549:5: ( '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit )
            // smartidl.g:549:9: '\\\\' 'u' HexDigit HexDigit HexDigit HexDigit
            {
            match('\\'); 
            match('u'); 
            mHexDigit(); 
            mHexDigit(); 
            mHexDigit(); 
            mHexDigit(); 

            }

        }
        finally {
        }
    }
    // $ANTLR end UnicodeEscape

    // $ANTLR start Identifier
    public final void mIdentifier() throws RecognitionException {
        try {
            int _type = Identifier;
            // smartidl.g:552:5: ( Letter ( Letter | DecimalLiteral )* )
            // smartidl.g:552:9: Letter ( Letter | DecimalLiteral )*
            {
            mLetter(); 
            // smartidl.g:552:16: ( Letter | DecimalLiteral )*
            loop21:
            do {
                int alt21=3;
                int LA21_0 = input.LA(1);

                if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||(LA21_0>='a' && LA21_0<='z')||(LA21_0>='\u00C0' && LA21_0<='\u00D6')||(LA21_0>='\u00D8' && LA21_0<='\u00F6')||(LA21_0>='\u00F8' && LA21_0<='\u1FFF')||(LA21_0>='\u3040' && LA21_0<='\u318F')||(LA21_0>='\u3300' && LA21_0<='\u337F')||(LA21_0>='\u3400' && LA21_0<='\u3D2D')||(LA21_0>='\u4E00' && LA21_0<='\u9FFF')||(LA21_0>='\uF900' && LA21_0<='\uFAFF')) ) {
                    alt21=1;
                }
                else if ( (LA21_0=='-'||(LA21_0>='0' && LA21_0<='9')) ) {
                    alt21=2;
                }


                switch (alt21) {
            	case 1 :
            	    // smartidl.g:552:17: Letter
            	    {
            	    mLetter(); 

            	    }
            	    break;
            	case 2 :
            	    // smartidl.g:552:24: DecimalLiteral
            	    {
            	    mDecimalLiteral(); 

            	    }
            	    break;

            	default :
            	    break loop21;
                }
            } while (true);


            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end Identifier

    // $ANTLR start Letter
    public final void mLetter() throws RecognitionException {
        try {
            // smartidl.g:557:5: ( '\\u0024' | '\\u0041' .. '\\u005a' | '\\u005f' | '\\u0061' .. '\\u007a' | '\\u00c0' .. '\\u00d6' | '\\u00d8' .. '\\u00f6' | '\\u00f8' .. '\\u00ff' | '\\u0100' .. '\\u1fff' | '\\u3040' .. '\\u318f' | '\\u3300' .. '\\u337f' | '\\u3400' .. '\\u3d2d' | '\\u4e00' .. '\\u9fff' | '\\uf900' .. '\\ufaff' )
            // smartidl.g:
            {
            if ( input.LA(1)=='$'||(input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z')||(input.LA(1)>='\u00C0' && input.LA(1)<='\u00D6')||(input.LA(1)>='\u00D8' && input.LA(1)<='\u00F6')||(input.LA(1)>='\u00F8' && input.LA(1)<='\u1FFF')||(input.LA(1)>='\u3040' && input.LA(1)<='\u318F')||(input.LA(1)>='\u3300' && input.LA(1)<='\u337F')||(input.LA(1)>='\u3400' && input.LA(1)<='\u3D2D')||(input.LA(1)>='\u4E00' && input.LA(1)<='\u9FFF')||(input.LA(1)>='\uF900' && input.LA(1)<='\uFAFF') ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }


            }

        }
        finally {
        }
    }
    // $ANTLR end Letter

    // $ANTLR start WS
    public final void mWS() throws RecognitionException {
        try {
            int _type = WS;
            // smartidl.g:571:5: ( ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' ) )
            // smartidl.g:571:8: ( ' ' | '\\r' | '\\t' | '\\u000C' | '\\n' )
            {
            if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||(input.LA(1)>='\f' && input.LA(1)<='\r')||input.LA(1)==' ' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse =
                    new MismatchedSetException(null,input);
                recover(mse);    throw mse;
            }

            channel=HIDDEN;

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end WS

    // $ANTLR start COMMENT
    public final void mCOMMENT() throws RecognitionException {
        try {
            int _type = COMMENT;
            // smartidl.g:575:5: ( '/*' ( options {greedy=false; } : . )* '*/' )
            // smartidl.g:575:9: '/*' ( options {greedy=false; } : . )* '*/'
            {
            match("/*"); 

            // smartidl.g:575:14: ( options {greedy=false; } : . )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( (LA22_0=='*') ) {
                    int LA22_1 = input.LA(2);

                    if ( (LA22_1=='/') ) {
                        alt22=2;
                    }
                    else if ( ((LA22_1>='\u0000' && LA22_1<='.')||(LA22_1>='0' && LA22_1<='\uFFFE')) ) {
                        alt22=1;
                    }


                }
                else if ( ((LA22_0>='\u0000' && LA22_0<=')')||(LA22_0>='+' && LA22_0<='\uFFFE')) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // smartidl.g:575:42: .
            	    {
            	    matchAny(); 

            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            match("*/"); 

            channel=HIDDEN;

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end COMMENT

    // $ANTLR start LINE_COMMENT
    public final void mLINE_COMMENT() throws RecognitionException {
        try {
            int _type = LINE_COMMENT;
            // smartidl.g:579:5: ( '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n' )
            // smartidl.g:579:7: '//' (~ ( '\\n' | '\\r' ) )* ( '\\r' )? '\\n'
            {
            match("//"); 

            // smartidl.g:579:12: (~ ( '\\n' | '\\r' ) )*
            loop23:
            do {
                int alt23=2;
                int LA23_0 = input.LA(1);

                if ( ((LA23_0>='\u0000' && LA23_0<='\t')||(LA23_0>='\u000B' && LA23_0<='\f')||(LA23_0>='\u000E' && LA23_0<='\uFFFE')) ) {
                    alt23=1;
                }


                switch (alt23) {
            	case 1 :
            	    // smartidl.g:579:12: ~ ( '\\n' | '\\r' )
            	    {
            	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFE') ) {
            	        input.consume();

            	    }
            	    else {
            	        MismatchedSetException mse =
            	            new MismatchedSetException(null,input);
            	        recover(mse);    throw mse;
            	    }


            	    }
            	    break;

            	default :
            	    break loop23;
                }
            } while (true);

            // smartidl.g:579:26: ( '\\r' )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0=='\r') ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // smartidl.g:579:26: '\\r'
                    {
                    match('\r'); 

                    }
                    break;

            }

            match('\n'); 
            channel=HIDDEN;

            }

            this.type = _type;
        }
        finally {
        }
    }
    // $ANTLR end LINE_COMMENT

    public void mTokens() throws RecognitionException {
        // smartidl.g:1:8: ( T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | Identifier | WS | COMMENT | LINE_COMMENT )
        int alt25=58;
        alt25 = dfa25.predict(input);
        switch (alt25) {
            case 1 :
                // smartidl.g:1:10: T23
                {
                mT23(); 

                }
                break;
            case 2 :
                // smartidl.g:1:14: T24
                {
                mT24(); 

                }
                break;
            case 3 :
                // smartidl.g:1:18: T25
                {
                mT25(); 

                }
                break;
            case 4 :
                // smartidl.g:1:22: T26
                {
                mT26(); 

                }
                break;
            case 5 :
                // smartidl.g:1:26: T27
                {
                mT27(); 

                }
                break;
            case 6 :
                // smartidl.g:1:30: T28
                {
                mT28(); 

                }
                break;
            case 7 :
                // smartidl.g:1:34: T29
                {
                mT29(); 

                }
                break;
            case 8 :
                // smartidl.g:1:38: T30
                {
                mT30(); 

                }
                break;
            case 9 :
                // smartidl.g:1:42: T31
                {
                mT31(); 

                }
                break;
            case 10 :
                // smartidl.g:1:46: T32
                {
                mT32(); 

                }
                break;
            case 11 :
                // smartidl.g:1:50: T33
                {
                mT33(); 

                }
                break;
            case 12 :
                // smartidl.g:1:54: T34
                {
                mT34(); 

                }
                break;
            case 13 :
                // smartidl.g:1:58: T35
                {
                mT35(); 

                }
                break;
            case 14 :
                // smartidl.g:1:62: T36
                {
                mT36(); 

                }
                break;
            case 15 :
                // smartidl.g:1:66: T37
                {
                mT37(); 

                }
                break;
            case 16 :
                // smartidl.g:1:70: T38
                {
                mT38(); 

                }
                break;
            case 17 :
                // smartidl.g:1:74: T39
                {
                mT39(); 

                }
                break;
            case 18 :
                // smartidl.g:1:78: T40
                {
                mT40(); 

                }
                break;
            case 19 :
                // smartidl.g:1:82: T41
                {
                mT41(); 

                }
                break;
            case 20 :
                // smartidl.g:1:86: T42
                {
                mT42(); 

                }
                break;
            case 21 :
                // smartidl.g:1:90: T43
                {
                mT43(); 

                }
                break;
            case 22 :
                // smartidl.g:1:94: T44
                {
                mT44(); 

                }
                break;
            case 23 :
                // smartidl.g:1:98: T45
                {
                mT45(); 

                }
                break;
            case 24 :
                // smartidl.g:1:102: T46
                {
                mT46(); 

                }
                break;
            case 25 :
                // smartidl.g:1:106: T47
                {
                mT47(); 

                }
                break;
            case 26 :
                // smartidl.g:1:110: T48
                {
                mT48(); 

                }
                break;
            case 27 :
                // smartidl.g:1:114: T49
                {
                mT49(); 

                }
                break;
            case 28 :
                // smartidl.g:1:118: T50
                {
                mT50(); 

                }
                break;
            case 29 :
                // smartidl.g:1:122: T51
                {
                mT51(); 

                }
                break;
            case 30 :
                // smartidl.g:1:126: T52
                {
                mT52(); 

                }
                break;
            case 31 :
                // smartidl.g:1:130: T53
                {
                mT53(); 

                }
                break;
            case 32 :
                // smartidl.g:1:134: T54
                {
                mT54(); 

                }
                break;
            case 33 :
                // smartidl.g:1:138: T55
                {
                mT55(); 

                }
                break;
            case 34 :
                // smartidl.g:1:142: T56
                {
                mT56(); 

                }
                break;
            case 35 :
                // smartidl.g:1:146: T57
                {
                mT57(); 

                }
                break;
            case 36 :
                // smartidl.g:1:150: T58
                {
                mT58(); 

                }
                break;
            case 37 :
                // smartidl.g:1:154: T59
                {
                mT59(); 

                }
                break;
            case 38 :
                // smartidl.g:1:158: T60
                {
                mT60(); 

                }
                break;
            case 39 :
                // smartidl.g:1:162: T61
                {
                mT61(); 

                }
                break;
            case 40 :
                // smartidl.g:1:166: T62
                {
                mT62(); 

                }
                break;
            case 41 :
                // smartidl.g:1:170: T63
                {
                mT63(); 

                }
                break;
            case 42 :
                // smartidl.g:1:174: T64
                {
                mT64(); 

                }
                break;
            case 43 :
                // smartidl.g:1:178: T65
                {
                mT65(); 

                }
                break;
            case 44 :
                // smartidl.g:1:182: T66
                {
                mT66(); 

                }
                break;
            case 45 :
                // smartidl.g:1:186: T67
                {
                mT67(); 

                }
                break;
            case 46 :
                // smartidl.g:1:190: T68
                {
                mT68(); 

                }
                break;
            case 47 :
                // smartidl.g:1:194: T69
                {
                mT69(); 

                }
                break;
            case 48 :
                // smartidl.g:1:198: T70
                {
                mT70(); 

                }
                break;
            case 49 :
                // smartidl.g:1:202: HexLiteral
                {
                mHexLiteral(); 

                }
                break;
            case 50 :
                // smartidl.g:1:213: DecimalLiteral
                {
                mDecimalLiteral(); 

                }
                break;
            case 51 :
                // smartidl.g:1:228: OctalLiteral
                {
                mOctalLiteral(); 

                }
                break;
            case 52 :
                // smartidl.g:1:241: FloatingPointLiteral
                {
                mFloatingPointLiteral(); 

                }
                break;
            case 53 :
                // smartidl.g:1:262: CharacterLiteral
                {
                mCharacterLiteral(); 

                }
                break;
            case 54 :
                // smartidl.g:1:279: StringLiteral
                {
                mStringLiteral(); 

                }
                break;
            case 55 :
                // smartidl.g:1:293: Identifier
                {
                mIdentifier(); 

                }
                break;
            case 56 :
                // smartidl.g:1:304: WS
                {
                mWS(); 

                }
                break;
            case 57 :
                // smartidl.g:1:307: COMMENT
                {
                mCOMMENT(); 

                }
                break;
            case 58 :
                // smartidl.g:1:315: LINE_COMMENT
                {
                mLINE_COMMENT(); 

                }
                break;

        }

    }


    protected DFA14 dfa14 = new DFA14(this);
    protected DFA25 dfa25 = new DFA25(this);
    static final String DFA14_eotS =
        "\1\uffff\1\5\4\uffff";
    static final String DFA14_eofS =
        "\6\uffff";
    static final String DFA14_minS =
        "\2\56\4\uffff";
    static final String DFA14_maxS =
        "\1\71\1\145\4\uffff";
    static final String DFA14_acceptS =
        "\2\uffff\1\2\1\1\1\3\1\4";
    static final String DFA14_specialS =
        "\6\uffff}>";
    static final String[] DFA14_transitionS = {
            "\1\2\1\uffff\12\1",
            "\1\3\1\uffff\12\1\13\uffff\1\4\37\uffff\1\4",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA14_eot = DFA.unpackEncodedString(DFA14_eotS);
    static final short[] DFA14_eof = DFA.unpackEncodedString(DFA14_eofS);
    static final char[] DFA14_min = DFA.unpackEncodedStringToUnsignedChars(DFA14_minS);
    static final char[] DFA14_max = DFA.unpackEncodedStringToUnsignedChars(DFA14_maxS);
    static final short[] DFA14_accept = DFA.unpackEncodedString(DFA14_acceptS);
    static final short[] DFA14_special = DFA.unpackEncodedString(DFA14_specialS);
    static final short[][] DFA14_transition;

    static {
        int numStates = DFA14_transitionS.length;
        DFA14_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA14_transition[i] = DFA.unpackEncodedString(DFA14_transitionS[i]);
        }
    }

    class DFA14 extends DFA {

        public DFA14(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 14;
            this.eot = DFA14_eot;
            this.eof = DFA14_eof;
            this.min = DFA14_min;
            this.max = DFA14_max;
            this.accept = DFA14_accept;
            this.special = DFA14_special;
            this.transition = DFA14_transition;
        }
        public String getDescription() {
            return "511:20: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? | '.' ( '0' .. '9' )+ ( Exponent )? | ( '0' .. '9' )+ Exponent | ( '0' .. '9' )+ )";
        }
    }
    static final String DFA25_eotS =
        "\1\uffff\1\36\1\uffff\5\36\2\uffff\5\36\1\uffff\2\36\1\uffff\2\36"+
        "\2\uffff\1\36\1\76\1\101\1\uffff\1\101\5\uffff\4\36\1\113\5\36\1"+
        "\121\5\36\1\133\10\36\1\146\2\36\3\uffff\1\151\1\uffff\2\101\2\uffff"+
        "\5\36\1\uffff\5\36\1\uffff\11\36\1\uffff\5\36\1\u0085\4\36\1\uffff"+
        "\2\36\1\uffff\1\36\1\u008e\7\36\1\u0097\6\36\1\u009e\4\36\1\u00a3"+
        "\4\36\2\uffff\3\36\1\u00ac\1\36\1\u00ae\1\u00af\1\36\1\uffff\3\36"+
        "\1\u00b4\1\u00b5\1\u00b6\2\36\1\uffff\2\36\1\u00bb\3\36\1\uffff"+
        "\4\36\1\uffff\1\u00c3\1\u00c4\2\36\1\uffff\3\36\1\uffff\1\36\2\uffff"+
        "\1\u00cb\3\36\3\uffff\1\u00cf\1\u00d0\2\36\1\uffff\7\36\2\uffff"+
        "\1\36\1\u00db\1\36\1\u00dd\1\36\1\u00df\1\uffff\1\36\1\u00e1\1\36"+
        "\2\uffff\1\u00e3\1\u00e4\1\u00e5\4\36\1\u00ea\1\u00eb\1\36\1\uffff"+
        "\1\36\1\uffff\1\36\1\uffff\1\36\1\uffff\1\36\3\uffff\2\36\1\u00f3"+
        "\1\u00f4\2\uffff\1\u00f5\2\36\1\u00f8\1\u00f9\1\u00fa\1\u00fb\3"+
        "\uffff\1\u00fc\1\u00fd\6\uffff";
    static final String DFA25_eofS =
        "\u00fe\uffff";
    static final String DFA25_minS =
        "\1\11\1\141\1\uffff\1\155\1\150\1\154\1\156\1\145\2\uffff\1\156"+
        "\1\157\3\141\1\uffff\1\145\1\150\1\uffff\1\146\1\151\2\uffff\1\157"+
        "\1\60\3\56\4\uffff\1\52\1\154\1\155\1\164\1\160\1\44\1\162\1\165"+
        "\1\160\1\154\1\162\1\44\2\143\1\161\1\151\1\157\1\44\1\154\1\157"+
        "\1\164\1\165\1\160\1\162\1\163\1\141\1\44\1\163\1\151\3\uffff\1"+
        "\56\1\uffff\2\56\2\uffff\1\142\1\154\1\145\1\61\1\157\1\uffff\1"+
        "\157\2\145\1\157\1\141\1\uffff\2\145\1\162\1\155\1\165\1\151\1\143"+
        "\1\154\1\145\1\uffff\1\163\1\141\1\145\1\142\1\55\1\44\1\151\1\163"+
        "\1\162\1\151\1\uffff\1\164\1\144\1\uffff\1\145\1\44\1\163\1\147"+
        "\1\64\1\62\1\66\1\162\1\167\1\44\1\144\1\167\1\171\1\156\1\160\1"+
        "\171\1\44\1\151\1\147\1\157\1\145\1\44\1\145\2\164\1\154\1\60\1"+
        "\uffff\1\143\1\156\1\151\1\44\1\143\2\44\1\162\1\uffff\1\160\1\145"+
        "\1\146\3\44\1\164\1\163\1\uffff\2\145\1\44\1\144\1\164\1\160\1\uffff"+
        "\1\162\1\156\1\144\1\141\1\uffff\2\44\1\151\1\145\1\uffff\1\164"+
        "\1\147\1\157\1\uffff\1\145\2\uffff\1\44\1\141\1\162\1\141\3\uffff"+
        "\2\44\1\146\1\144\1\uffff\1\163\1\151\1\164\3\145\1\156\2\uffff"+
        "\1\155\1\44\1\165\1\44\1\156\1\44\1\uffff\1\143\1\44\1\143\2\uffff"+
        "\3\44\1\157\1\145\2\144\2\44\1\145\1\uffff\1\162\1\uffff\1\151\1"+
        "\uffff\1\145\1\uffff\1\145\3\uffff\1\156\1\144\2\44\2\uffff\1\44"+
        "\1\145\1\144\4\44\3\uffff\2\44\6\uffff";
    static final String DFA25_maxS =
        "\1\ufaff\1\165\1\uffff\1\156\1\171\1\163\1\170\1\145\2\uffff\1\156"+
        "\1\171\1\154\1\157\1\141\1\uffff\1\164\1\150\1\uffff\1\146\1\151"+
        "\2\uffff\1\157\1\71\1\170\1\71\1\145\4\uffff\1\57\2\155\1\164\1"+
        "\160\1\ufaff\1\162\1\165\1\160\1\154\1\162\1\ufaff\1\164\1\165\1"+
        "\161\1\163\1\157\1\ufaff\1\154\1\157\1\164\1\165\1\170\1\162\1\163"+
        "\1\157\1\ufaff\1\163\1\151\3\uffff\1\145\1\uffff\2\145\2\uffff\1"+
        "\142\1\154\2\145\1\157\1\uffff\1\157\2\145\1\157\1\141\1\uffff\2"+
        "\145\1\162\1\155\1\165\1\151\1\143\1\154\1\145\1\uffff\1\163\1\141"+
        "\1\145\1\142\1\55\1\ufaff\1\165\1\163\1\162\1\151\1\uffff\1\164"+
        "\1\144\1\uffff\1\145\1\ufaff\1\163\1\162\1\64\1\62\1\66\1\162\1"+
        "\167\1\ufaff\1\144\1\167\1\171\1\156\1\160\1\171\1\ufaff\1\151\1"+
        "\147\1\157\1\145\1\ufaff\1\145\2\164\1\154\1\160\1\uffff\1\143\1"+
        "\156\1\151\1\ufaff\1\143\2\ufaff\1\162\1\uffff\1\160\1\145\1\146"+
        "\3\ufaff\1\164\1\163\1\uffff\2\145\1\ufaff\1\144\1\164\1\160\1\uffff"+
        "\1\162\1\156\1\144\1\141\1\uffff\2\ufaff\1\151\1\145\1\uffff\1\164"+
        "\1\147\1\157\1\uffff\1\145\2\uffff\1\ufaff\1\141\1\162\1\141\3\uffff"+
        "\2\ufaff\1\146\1\144\1\uffff\1\163\1\151\1\164\3\145\1\156\2\uffff"+
        "\1\155\1\ufaff\1\165\1\ufaff\1\156\1\ufaff\1\uffff\1\143\1\ufaff"+
        "\1\143\2\uffff\3\ufaff\1\157\1\145\2\144\2\ufaff\1\145\1\uffff\1"+
        "\162\1\uffff\1\151\1\uffff\1\145\1\uffff\1\145\3\uffff\1\156\1\144"+
        "\2\ufaff\2\uffff\1\ufaff\1\145\1\144\4\ufaff\3\uffff\2\ufaff\6\uffff";
    static final String DFA25_acceptS =
        "\2\uffff\1\2\5\uffff\1\10\1\11\5\uffff\1\24\2\uffff\1\33\2\uffff"+
        "\1\43\1\44\5\uffff\1\65\1\66\1\67\1\70\35\uffff\1\64\1\55\1\61\1"+
        "\uffff\1\62\2\uffff\1\72\1\71\5\uffff\1\32\5\uffff\1\5\11\uffff"+
        "\1\41\12\uffff\1\36\2\uffff\1\63\33\uffff\1\40\10\uffff\1\56\10"+
        "\uffff\1\57\6\uffff\1\42\4\uffff\1\13\4\uffff\1\23\3\uffff\1\27"+
        "\1\uffff\1\37\1\53\4\uffff\1\16\1\15\1\14\4\uffff\1\35\7\uffff\1"+
        "\60\1\20\6\uffff\1\22\3\uffff\1\3\1\54\12\uffff\1\21\1\uffff\1\26"+
        "\1\uffff\1\50\1\uffff\1\17\1\uffff\1\4\1\34\1\46\4\uffff\1\25\1"+
        "\30\7\uffff\1\7\1\12\1\31\2\uffff\1\1\1\51\1\47\1\6\1\45\1\52";
    static final String DFA25_specialS =
        "\u00fe\uffff}>";
    static final String[] DFA25_transitionS = {
            "\2\37\1\uffff\2\37\22\uffff\1\37\1\uffff\1\35\1\uffff\1\36\2"+
            "\uffff\1\34\1\10\1\11\2\uffff\1\22\1\32\1\30\1\40\1\31\11\33"+
            "\1\uffff\1\2\1\uffff\1\17\3\uffff\32\36\4\uffff\1\36\1\uffff"+
            "\1\5\1\13\1\21\1\15\1\6\1\14\2\36\1\3\2\36\1\24\1\16\1\1\1\23"+
            "\2\36\1\7\1\20\1\4\1\12\1\27\4\36\1\25\1\uffff\1\26\102\uffff"+
            "\27\36\1\uffff\37\36\1\uffff\u1f08\36\u1040\uffff\u0150\36\u0170"+
            "\uffff\u0080\36\u0080\uffff\u092e\36\u10d2\uffff\u5200\36\u5900"+
            "\uffff\u0200\36",
            "\1\42\23\uffff\1\41",
            "",
            "\1\44\1\43",
            "\1\46\6\uffff\1\45\2\uffff\1\47\6\uffff\1\50",
            "\1\51\5\uffff\1\52\1\53",
            "\1\55\11\uffff\1\54",
            "\1\56",
            "",
            "",
            "\1\57",
            "\1\60\11\uffff\1\61",
            "\1\62\12\uffff\1\63",
            "\1\64\15\uffff\1\65",
            "\1\66",
            "",
            "\1\70\16\uffff\1\67",
            "\1\71",
            "",
            "\1\72",
            "\1\73",
            "",
            "",
            "\1\74",
            "\12\75",
            "\1\75\1\uffff\10\100\2\75\13\uffff\1\75\22\uffff\1\77\14\uffff"+
            "\1\75\22\uffff\1\77",
            "\1\75\1\uffff\1\102\11\33",
            "\1\75\1\uffff\12\103\13\uffff\1\75\37\uffff\1\75",
            "",
            "",
            "",
            "",
            "\1\105\4\uffff\1\104",
            "\1\107\1\106",
            "\1\110",
            "\1\111",
            "\1\112",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\114",
            "\1\115",
            "\1\116",
            "\1\117",
            "\1\120",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\123\20\uffff\1\122",
            "\1\124\21\uffff\1\125",
            "\1\126",
            "\1\130\11\uffff\1\127",
            "\1\131",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\23\36\1\132\6\36\105\uffff\27\36\1\uffff\37\36\1\uffff"+
            "\u1f08\36\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff"+
            "\u092e\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\134",
            "\1\135",
            "\1\136",
            "\1\137",
            "\1\141\7\uffff\1\140",
            "\1\142",
            "\1\143",
            "\1\144\15\uffff\1\145",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\147",
            "\1\150",
            "",
            "",
            "",
            "\1\75\1\uffff\10\100\2\75\13\uffff\1\75\37\uffff\1\75",
            "",
            "\1\75\1\uffff\12\75\13\uffff\1\75\37\uffff\1\75",
            "\1\75\1\uffff\12\103\13\uffff\1\75\37\uffff\1\75",
            "",
            "",
            "\1\152",
            "\1\153",
            "\1\154",
            "\1\160\1\uffff\1\157\2\uffff\1\156\56\uffff\1\155",
            "\1\161",
            "",
            "\1\162",
            "\1\163",
            "\1\164",
            "\1\165",
            "\1\166",
            "",
            "\1\167",
            "\1\170",
            "\1\171",
            "\1\172",
            "\1\173",
            "\1\174",
            "\1\175",
            "\1\176",
            "\1\177",
            "",
            "\1\u0080",
            "\1\u0081",
            "\1\u0082",
            "\1\u0083",
            "\1\u0084",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u0087\13\uffff\1\u0086",
            "\1\u0088",
            "\1\u0089",
            "\1\u008a",
            "",
            "\1\u008b",
            "\1\u008c",
            "",
            "\1\u008d",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u008f",
            "\1\u0090\12\uffff\1\u0091",
            "\1\u0092",
            "\1\u0093",
            "\1\u0094",
            "\1\u0095",
            "\1\u0096",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u0098",
            "\1\u0099",
            "\1\u009a",
            "\1\u009b",
            "\1\u009c",
            "\1\u009d",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u009f",
            "\1\u00a0",
            "\1\u00a1",
            "\1\u00a2",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00a4",
            "\1\u00a5",
            "\1\u00a6",
            "\1\u00a7",
            "\12\36\66\uffff\1\u00a8",
            "",
            "\1\u00a9",
            "\1\u00aa",
            "\1\u00ab",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00ad",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00b0",
            "",
            "\1\u00b1",
            "\1\u00b2",
            "\1\u00b3",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00b7",
            "\1\u00b8",
            "",
            "\1\u00b9",
            "\1\u00ba",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00bc",
            "\1\u00bd",
            "\1\u00be",
            "",
            "\1\u00bf",
            "\1\u00c0",
            "\1\u00c1",
            "\1\u00c2",
            "",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00c5",
            "\1\u00c6",
            "",
            "\1\u00c7",
            "\1\u00c8",
            "\1\u00c9",
            "",
            "\1\u00ca",
            "",
            "",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00cc",
            "\1\u00cd",
            "\1\u00ce",
            "",
            "",
            "",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00d1",
            "\1\u00d2",
            "",
            "\1\u00d3",
            "\1\u00d4",
            "\1\u00d5",
            "\1\u00d6",
            "\1\u00d7",
            "\1\u00d8",
            "\1\u00d9",
            "",
            "",
            "\1\u00da",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00dc",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00de",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "",
            "\1\u00e0",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00e2",
            "",
            "",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00e6",
            "\1\u00e7",
            "\1\u00e8",
            "\1\u00e9",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00ec",
            "",
            "\1\u00ed",
            "",
            "\1\u00ee",
            "",
            "\1\u00ef",
            "",
            "\1\u00f0",
            "",
            "",
            "",
            "\1\u00f1",
            "\1\u00f2",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "",
            "",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\u00f6",
            "\1\u00f7",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "",
            "",
            "",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "\1\36\10\uffff\1\36\2\uffff\12\36\7\uffff\32\36\4\uffff\1\36"+
            "\1\uffff\32\36\105\uffff\27\36\1\uffff\37\36\1\uffff\u1f08\36"+
            "\u1040\uffff\u0150\36\u0170\uffff\u0080\36\u0080\uffff\u092e"+
            "\36\u10d2\uffff\u5200\36\u5900\uffff\u0200\36",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
    static final short[][] DFA25_transition;

    static {
        int numStates = DFA25_transitionS.length;
        DFA25_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
        }
    }

    class DFA25 extends DFA {

        public DFA25(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 25;
            this.eot = DFA25_eot;
            this.eof = DFA25_eof;
            this.min = DFA25_min;
            this.max = DFA25_max;
            this.accept = DFA25_accept;
            this.special = DFA25_special;
            this.transition = DFA25_transition;
        }
        public String getDescription() {
            return "1:1: Tokens : ( T23 | T24 | T25 | T26 | T27 | T28 | T29 | T30 | T31 | T32 | T33 | T34 | T35 | T36 | T37 | T38 | T39 | T40 | T41 | T42 | T43 | T44 | T45 | T46 | T47 | T48 | T49 | T50 | T51 | T52 | T53 | T54 | T55 | T56 | T57 | T58 | T59 | T60 | T61 | T62 | T63 | T64 | T65 | T66 | T67 | T68 | T69 | T70 | HexLiteral | DecimalLiteral | OctalLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | Identifier | WS | COMMENT | LINE_COMMENT );";
        }
    }
 

}